pipewire 音频控制
·
Table of Contents
gnome音频问题排查
systemctl --user --now disable pulseaudio.socket pulseaudio.service
systemctl --user status pipewire pipewire-pulse wireplumber pulseaudio 2>/dev/null | grep -E "Active:|Loaded:"
# 列出 ALSA 识别的声卡
aplay -l
# 重新加载声卡模块(常见 Intel/Realtek)
sudo alsa force-reload
# 或手动加载(根据芯片选):
sudo modprobe snd_hda_intel # Intel HDA
sudo modprobe snd_hda_codec_realtek # Realtek 编解码器常见问题补丁
# 检查内核是否屏蔽了声卡(罕见但致命)
grep -i "blacklist.*snd" /etc/modprobe.d/*
# 若有 → 注释掉相关行并 reboot
# 查看音频服务 sink(输出设备)
pactl info | grep "Default Sink"
pactl list short sinks
# 重置用户音频配置(安全!会重建 ~/.config/pipewire 等)
systemctl --user stop pipewire{,-pulse} wireplumber
rm -rf ~/.config/pipewire ~/.config/pulse
systemctl --user start pipewire{,-pulse} wireplumber
# 禁用“声音效果”干扰(某些主题/扩展冲突)
gsettings set org.gnome.desktop.sound event-sounds false
gsettings set org.gnome.desktop.sound input-feedback-sounds false
# PipeWire 日志(高亮关键错误)
journalctl --user-unit=pipewire --user-unit=wireplumber -f
# 或 PulseAudio(若仍在用)
pulseaudio -k; pulseaudio --start --log-level=debug
# 观察终端输出中的 ERROR/WARNING
# 播放测试音(设备 0,0 = 第一块声卡第一个设备)
speaker-test -D hw:0,0 -c 2 -t wav
# 若能听到“左…右…” → 硬件正常!问题在上层服务(Pulse/PipeWire/GNOME)
# 若无声 → 硬件/驱动层问题
sudo apt install pavucontrol # Debian/Ubuntu
pavucontrol
sudo apt install linux-firmware # Ubuntu/Debian
# 看 Codec 芯片型号
cat /proc/asound/cards
# 再看具体编解码器:
cat /proc/asound/card*/codec#*
# 用 lspci 确认硬件源头
lspci -v | grep -A 10 -i "audio\|multimedia"
# 只有 1 个 Audio device!证明是单物理声卡。
# HDMI 音频其实是 GPU 的一部分:
# HDMI 音频由 i915 显卡驱动 通过 snd_hda_intel 声卡驱动 输出(共享同一控制器)
# 如何「隐藏」不用的 HDMI 设备?(可选)
sudo nano /etc/modprobe.d/disable-hdmi.conf
# 只启用 card 0 的 device 0(模拟输出),禁用其他 device
options snd_hda_intel index=0 enable=1
options snd_hda_intel index=1 enable=0 # 禁用 HDMI(若被识别为 card 1)
# 但你的 HDMI 和模拟在同一 card,需用 pin 配置 → 见前文 model= 方案
speaker-test -c 2 -D default # 默认设备双声道测试
# 或指定设备:
speaker-test -c 2 -D hw:0,0 # hw:0,0 是 card 0, device 0
# 临时关闭 PulseAudio 再测(仅调试用)
# 退出 PulseAudio(--kill)
pulseaudio -k
# 立即测试(5秒内操作!否则 PulseAudio 会自动重启)
speaker-test -D hw:0,0 -c 2 -t wav -l 1
# 测完手动重启(或等它自启)
pulseaudio --start
# 播放一个测试音(走 PulseAudio)
echo "test" | festival --tts
# 或用 ALSA 的 plughw(允许混音,不冲突)
speaker-test -D plughw:0,0 -c 2 -t wav -l 1
aplay -D hw:0,3 /usr/share/sounds/alsa/Front_Left.wav
# HDMI设备参数
aplay -D hw:0,3 --dump-hw-params
# 强制 ALSA 探测 HDMI 音频(加 probe_mask)
# 创建配置文件
echo "options snd_hda_intel probe_mask=0xfff" | sudo tee /etc/modprobe.d/99-hdmi-audio.conf
# 重启(必须!)
sudo reboot
amixer -c 0 scontents
pactl list sink-inputs short
# 强制把 Chrome 流切回内置声卡
# 先获取 Chrome 的 sink-input index(如上面的 42)
# 再获取目标 sink 名称(如 alsa_output.pci-0000_00_1f.3.analog-stereo)
pactl move-sink-input 42 alsa_output.pci-0000_00_1f.3.analog-stereo
# 0 表示 取消挂起
pactl suspend-sink alsa_output.pci-0000_00_1f.3.analog-stereo 0
lsof /dev/snd/*
fuser -v /dev/snd/*